﻿using System;
//4.12 属性
//前面以及介绍了在程序中适用修饰符给代码元素指定属性 ，如virtual或ref。这些结构时语言内置的。
//属性是添加自定义信息到代码元素（程序集、类型、成员、返回值和参数）的扩展机制。
//这种可扩展性对于C#语言中那些深度整合到类型系统且不需要特殊关键字或结构的服务是非常有用的。

//属性的一个常见例子是序列化，就是将任意对象转换为一个特定格式或从特定格式生成一个对象的过程。在这种情况中，某个字段的属性可以指定该字段的C#表示方式和该字段的表示方式之间的转换。


//4.12.1 属性类
//属性是通过直接或间接地继承抽象类System.Attribute的方式定义的。如果要将一个属性附加到一个代码元素中，那么就需要在该代码元素之前用方括号指定属性的类型名称。
//例如，下面的例子将ObsoleteAttribute附加到Foo类上：
[ObsoleteAttribute]
public class Foo { }
//编译器能够识别这个属性，如果某个标记为弃用的类型或成员被引用时，编译器会发出警告。
//按照惯例，所有属性类型都以Attribute结尾。C#能够识别这个后缀，也可以在附加一个属性时省略这个后缀。
[Obsolete]
public class Foo_1 { }
//ObsoleteAttribute是在System命名空间中声明的一种类型，如下所示（省略部分代码）：
//public sealed class ObsoleteAttribute : Attribute { }
//C#语言和.NET Framework包含了大量的预定义属性。

namespace _138_属性_属性类
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
